package com.gourd.index.config;

import org.springframework.web.servlet.LocaleResolver;
import org.thymeleaf.util.StringUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Locale;

/** 
 * 自定义国际化语言解析器 
 *
 * @author gourd
 */  
public class MyLocaleResolver implements LocaleResolver {
      
    private static final String LANGUAGE = "lang";
    private static final String LANGUAGE_SESSION = "lang_session";
  
    @Override  
    public Locale resolveLocale(HttpServletRequest req) {
        String i18n_language = req.getParameter(LANGUAGE);
        Locale locale = Locale.getDefault();  
        if(!StringUtils.isEmpty(i18n_language)) {  
            String[] language = i18n_language.split("_");
            locale = new Locale(language[0], language[1]);  
              
            // 将国际化语言保存到session
            HttpSession session = req.getSession();
            session.setAttribute(LANGUAGE_SESSION, locale);
        }else {  
            // 如果没有带国际化参数，则判断session有没有保存，
            // 有保存，则使用保存的，也就是之前设置的，避免之后的请求不带国际化参数造成语言显示不对
            HttpSession session = req.getSession();
            Locale localeInSession = (Locale) session.getAttribute(LANGUAGE_SESSION);
            if(localeInSession != null) {  
                locale = localeInSession;  
            }  
        }  
        return locale;  
    }  
  
    @Override  
    public void setLocale(HttpServletRequest req, HttpServletResponse res, Locale locale) {
          
    }  
  
}  